﻿using System;
using System.Diagnostics.Contracts;
using System.Collections.Generic;

namespace MoXAML.Infrastructure
{
    [ContractClassFor(typeof(ICommandBase))]
    public abstract class CommandBaseContract : ICommandBase
    {
        #region ICommandBase Members

        public void Initialize(EnvDTE80.DTE2 application, EnvDTE.AddIn addInInstance)
        {
            Contract.Requires(application != null);
            Contract.Requires(addInInstance != null);
        }

        public string CommandName
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(value));
            }
        }

        public string Caption
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(value));
            }
        }

        public void Register(Microsoft.VisualStudio.CommandBars.CommandBarPopup parentControl)
        {
            Contract.Requires(parentControl != null);
        }

        public void Close()
        {

        }

        public abstract List<CommandBarType> ParentCommandBar
        {
            get;
        }

        #endregion

        #region IDisposable Members

        public void Dispose()
        {
            
        }

        #endregion

        #region ICommandBase Members


        public bool CanExecute(EnvDTE.vsCommandExecOption executeOption)
        {
            throw new NotImplementedException();
        }

        public void Execute()
        {
            throw new NotImplementedException();
        }

        #endregion

        #region ICommandBase Members


        public EnvDTE.vsCommandStatus GetStatus()
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
